package com.wms.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import java.math.BigDecimal;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang.StringUtils;

/**
 * <p>
 * 
 * </p>
 *
 * @author wms
 * @since 2022-10-15
 */
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="Goods对象", description="")
@TableName("goods")
public class Goods implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "主键")
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    @ApiModelProperty(value = "货名")
    private String name;

    @ApiModelProperty(value = "仓库")
    private Integer storage;

    @ApiModelProperty(value = "分类")
    @TableField("goodsType")
    private Integer goodstype;

    @ApiModelProperty(value = "数量")
    private Integer count;

    @ApiModelProperty(value = "备注")
    private String remark;

    @ApiModelProperty(value = "目标值")
    private BigDecimal targetValue;

    @TableField(exist = false)
    private String myGoodsName;

    @ApiModelProperty(value = "目标值字符串")
    private String targetValueString;

  
    private BigDecimal targetBig;
    
    @TableField(exist = false)
    private BigDecimal targetValueFLoat;

    @TableField(exist = false)
    private String text;

    @TableField(exist = false)
    private Double myTestFloat;

    @TableField(exist = false)
    private String platform = "0";
    
    /*
    重写TargetValue的set方法后，无论new 对象给TargetValue字段赋任何值，
    实际上TargetValue字段都会被赋值 1.200, getTargetValue显示的是 1.200
     */
   /* public void setTargetValue(BigDecimal bigDecimal){
        this.TargetValue=(new BigDecimal("1.200"));
        //this.TargetValue=null;
    }*/
    
    /*
    重写remark的get方法，无论new 对象给Remark字段set赋任何值，实际上getRemark返回Remark字段都是字符串"2024", 
    在接口的Vo类里重写get方法，那么接口该字段的返回值就是重写方法中的值;保存接口就算入参没有remark，在数据库表里remark的值也是被写死为2024
     */
   public String getRemark(){
        return String.valueOf(2024);
    }

    /*
    重写remark的set方法, 无论new 对象给Remark字段set赋任何值,实际上getRemark返回Remark字段都是字符串"2024.23",和重写get方法的效果相同；
    
    如果同时重写了remark的set和get方法，那么getRemakr返回Remark字段的值是重写的get方法的值；
    
    注意：如果入参类和返回类用的是同一个类，那就不建议在这个类里重写get或set方法，建议老老实实在实现层代码里写；
         
         如果入参类和返回类用的是Po类，并且这个字段a还是表里的字段，那就不建议重写get和set方法。如果只是较验字段a数值的精度，
                --字段a的值不会被别的地方使用，那是可以重写get或者set方法的；
                --注意如果是不同类型,就不保存字段a的值，那么就要在set方法里分类型保存了字段a的值，还是不建议重写set方法，建议重写get方法
    
    查询接口，返回的Vo类是表对应的Po类，有字段只是返回到前端但是不保存到表里，并且后端代码里也不会用到这个字段的值，那就可以重写这个字段的get方法
   
   原则上我是不建议重写get和set方法的，字段的值都写死了，以后业务变了会麻烦的
     */
//    public void setRemark(String str){
//        this.remark="2024.23";
//    }
    
    //BigDecimal数据转字符串
    public String getMyGoodsName(){
        if (ObjectUtils.isNotEmpty(targetValue)) {
            return targetValue.setScale(3,BigDecimal.ROUND_HALF_UP).toString();
        } else {
            return null;
        }
    }

    //字符串转浮点数返回给前端
    public BigDecimal getTargetValueFLoat() {
        //storage=null时，storage==null是直接抛异常的
        if (StringUtils.isNotBlank(targetValueString) && (storage == 14 || storage == 11)) {
            return new BigDecimal(targetValueString).setScale(3, BigDecimal.ROUND_HALF_UP);
        } else {
            return null;
        }
    }

    /*
    public BigDecimal getTargetValue() {
        if (ObjectUtils.isNotEmpty(targetValue)) {
            return targetValue.setScale(3,BigDecimal.ROUND_HALF_UP);
        } else {
            return null;
        }
    }*/

    public String getText() {
      return remark;
    }


    public BigDecimal getTargetBig(){
        if (ObjectUtils.isNotEmpty(targetBig)) {
            return targetBig.setScale(3,BigDecimal.ROUND_HALF_UP);
        } else {
            return null;
        }
    }
}
